﻿// tdx1.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
#include "tdx1.h"
#include <stdio.h>

#include "httpPost.h"


// 这是导出变量的一个示例
TDX1_API int ntdx1=0;

// 这是导出函数的一个示例。
TDX1_API int fntdx1(void)
{
    return 42;
}

// 这是已导出类的构造函数。
Ctdx1::Ctdx1()
{
    return;
}

void httpInvoke(char* stockCode, char* price, char* type)
{
	BOOL            bRc = FALSE;
	std::string     strRc = "";
	std::string     strTempA = "";
	std::wstring    strTemp = L"";

	CHttpPost   httpPost;

	char json[200] = {0};
	sprintf(json, "{\"stockKey\":\"%s\",\"price\":%s,\"alarmType\":%s}", stockCode, price, type);


	// 一个假设的url, 实际用的时候，搞一个能 post data 的url
	bRc = httpPost.PostDataToWebA(
		"http://127.0.0.1/api/alarm",
		json,
		strRc);

	const char *data = "bRc = %s\r\n";
	WCHAR *d = (WCHAR*)data;
	strTemp = httpPost.StringFormatV(d, bRc ? L"TRUE" : L"FALSE");
	_tprintf(strTemp.c_str());

	if (bRc)
	{
		const char *data2 = "strRc = %s\r\n";
		char *p = (char*)data2;
		strRc = httpPost.Utf82ansi(strRc); ///< 网页返回来的是utf8
		strTempA = httpPost.StringFormatVA(p, strRc.c_str());
		printf(strTempA.c_str());
	}
}


void TdxMsg(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc)
{

	char title[200] = { 0 };

	char stockcode[20] = { 0 };
	sprintf(stockcode,"%06.0f", pfINa[DataLen - 1]);

	char price[20] = { 0 };
	if (pfINb[DataLen - 1] > 0.0f)
	{
		sprintf(price, "%.3f", pfINb[DataLen - 1]);
	}
	else {
		sprintf(price, "0.00");
	}
	
	char type[10] = { 0 };
	if (pfINc[DataLen - 1] > 0.0f)
	{
		sprintf(type, "%.4f",pfINc[DataLen - 1]);
	}
	else {
		sprintf(type, "0.00");
	}

	sprintf(title, "%s|%s|%s\n", stockcode, price, type);

	httpInvoke(stockcode, price, type);

	FILE *fp;
	fp = fopen("D:\\test.txt","a+");
	if (fp != NULL) 
	{
		fprintf(fp, title);
		fclose(fp);
	}
}


//加载的函数
PluginTCalcFuncInfo g_CalcFuncSets[] =
{
	{1,(pPluginFUNC)&TdxMsg},
	{0,NULL},
};

//导出给TCalc的注册函数
BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun)
{
	if (*pFun == NULL)
	{
		(*pFun) = g_CalcFuncSets;
		return TRUE;
	}
	return FALSE;
}